#include "Stack.h"
#include "Queue.h"
#include "PriorityQueue.h"
#include <iostream>
#include <stack>
#include <queue>
#include <list>

using namespace std;

void StackTest()
{
	//stack<int> st;
	//Stack<int> st;
	//Stack<int, vector<int>> st;
	Stack<int, list<int>> st;
	
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);

	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;
}


void QueueTest()
{
	//queue<int> q;
	Queue<int> q;
	q.push(3);
	q.push(5);
	cout << q.front() << " ";
	q.pop();
	q.push(1);
	q.push(4);
	q.push(2);

	while (!q.empty())
	{
		cout << q.front() << " ";
		q.pop();
	}
	cout << endl;
}

void PriorityQueueTest()
{
	PriorityQueue<int, vector<int>, Greater<int>> pq;
	pq.push(1);
	pq.push(2);
	pq.push(3);
	pq.push(4);
	pq.push(5);

	while (!pq.empty())
	{
		cout << pq.front() << " ";
		pq.pop();
	}
	cout << endl;
}

int main()
{
	//StackTest();
	//QueueTest();
	PriorityQueueTest();

	return 0;
}